export function parseChapters(text: string): string[] {
  // 首先尝试按章节标题分割
  const chapterPatterns = [
    /第[零一二三四五六七八九十百千\d]+章\s*[^\n]*/g,
    /第[零一二三四五六七八九十百千\d]+节\s*[^\n]*/g,
    /Chapter\s*\d+/gi,
    /第\d+章\s*[^\n]*/g
  ];
  
  let chapters: string[] = [];
  
  // 尝试不同的章节模式
  for (const pattern of chapterPatterns) {
    const matches = text.match(pattern);
    if (matches && matches.length > 1) {
      // 按章节分割
      const parts = text.split(pattern);
      chapters = parts.filter(part => part.trim().length > 10);
      if (chapters.length > 1) break;
    }
  }
  
  // 如果没有找到章节，按段落分割
  if (chapters.length <= 1) {
    const paragraphs = text.split(/\n{2,}/).filter(p => p.trim().length > 20);
    if (paragraphs.length > 1) {
      chapters = paragraphs;
    } else {
      // 如果段落分割也失败，按固定长度分割
      const chunkSize = 1000; // 每章约1000字符
      chapters = [];
      for (let i = 0; i < text.length; i += chunkSize) {
        const chunk = text.slice(i, i + chunkSize);
        if (chunk.trim()) {
          chapters.push(chunk.trim());
        }
      }
    }
  }
  
  return chapters.length > 0 ? chapters : [text];
}

// 清理文本格式
export function cleanText(text: string): string {
  return text
    .replace(/\r\n/g, '\n')       // 统一换行符
    .replace(/\s{2,}/g, ' ')      // 压缩多余空格
    .replace(/(\n){3,}/g, '\n\n') // 压缩多余空行
    .replace(/[\uFFFD\u0000-\u001F\u007F-\u009F]/g, '') // 移除控制字符和乱码
    .replace(/[^\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef\w\s\n.,!?;:()（）""''…]/g, '') // 只保留中文、英文、标点等有效字符
    .trim();
}

// 检测文本编码质量
export function detectEncodingQuality(text: string): number {
  const totalChars = text.length;
  const validChars = text.replace(/[\uFFFD\u0000-\u001F\u007F-\u009F]/g, '').length;
  return totalChars > 0 ? validChars / totalChars : 0;
}
